package q371_getSum;

public class Solution {
    /*
    从二进制的角度看待两个数相加
    首先是相加后的进位视为二进制时应该是什么样的 应该是(a & b) << 1
    而相加后的未进位 则是用异或
    因此只需要不断地计算进位和未进位
    即可得到答案
     */
    public int getSum(int a, int b) {
        while (b != 0) {
            int carry = (a & b) << 1;
            a = a ^ b;
            b = carry;
        }
        return a;
    }
}
